python入门利器-codecademy-分享一个简单练习
对于数据分析的同学来讲,要做的深入,R和Python是要会一个的,那零基础怎么学呢?https://www.codecademy.com/ 是个不错的选择,它会以介绍、让你练习、练习通过进入下一步(或者自己挑选某个章节)的方式进行练习,不会给你答案,要么正确通过,要么就放在那里,直到你会,可以清楚地看到自己哪个部份完成了多少,总体进度等。数学专业无理由惧怕编程的同学可以学R,你一看到R代码就像是看到了自己学过的数学公式一样,会更容易接受和理解。Python语言较为严格一些。
免费版本对于Python基础的掌握已经够了,学完这上边的课程,基本上会对Python有一个基本了解,紧接着学习各个数据分析常用模块(numpy、pandas、Matplolib)就会比较容易。比如下边的例子其实是一个大章节里的10几个小步骤完成的,每一步通过会进入下一步,循序渐进、由简入繁,很好理解。codecademy上边的练习不是按照项目,有点像模块,但是我们的目标是用Python来支持数据分析工作,不是当Python程序员。
基础步骤必须敲代码,一步一步来,否则一个缩进就能把人干倒。
目的,求一个班级的平均成绩及对应的成绩类型。
#字典的定义方式
lloyd = { "name": "Lloyd", "homework": [90.0,97.0,75.0,92.0], "quizzes": [88.0,40.0,94.0], "tests": [75.0,90.0] } alice = { "name": "Alice", "homework": [100.0, 92.0, 98.0, 100.0], "quizzes": [82.0, 83.0, 91.0], "tests": [89.0, 97.0] } tyler = { "name": "Tyler", "homework": [0.0, 87.0, 75.0, 22.0], "quizzes": [0.0, 75.0, 78.0], "tests": [100.0, 100.0] }
若要打印学生的名称及其成绩: students=[lloyd,alice,tyler] for each in students: print each["name"] print each["homework"] print each["quizzes"] print each["tests"] Lloyd [90.0, 97.0, 75.0, 92.0] [88.0, 40.0, 94.0] [75.0, 90.0] Alice [100.0, 92.0, 98.0, 100.0] [82.0, 83.0, 91.0] [89.0, 97.0] Tyler [0.0, 87.0, 75.0, 22.0] [0.0, 75.0, 78.0] [100.0, 100.0]
# 自定义一个函数求一个list的平均值 def average(numbers): total=sum(numbers) total=float(total) return total/len(numbers)
#自定义一个函数,求一个学生的综合成绩,先求出各个分类的平均成绩,再分别乘以每个类别的权重,得到他的综合成绩 def get_average(student): homework=average(student["homework"]) quizzes=average(student["quizzes"]) tests=average(student["tests"]) return 0.1*homework+0.3*quizzes+0.6*tests
#自定义一个函数,将成绩分为不同等级 def get_letter_grade(score): if score>=90: return "A" elif score>=80 and score<90: return "B" elif score>=70 and score<80: return "C" elif score>=60 and score<70: return "D" else: return "F"
#测试一下,求Lloyd的综合成绩 get_letter_grade(get_average(lloyd))
#定义一个函数,求一个班级的综合成绩 def get_class_average(students): results=[]; for student in students: results.append(get_average(student)) return average(results)
#假设这个班有三个人
print get_class_average([lloyd,alice,tyler]) print get_letter_grade(get_class_average([lloyd,alice,tyler]))